# 读取文件、ones、zero、eyes 矩阵、false和true数据过滤、reshape、astype、切片、min、sum 、alexis（1行0列）
# random 、 linspace 范围内随机数、array 、shape

import numpy as np
import os

if __name__ == '__main__':
    var = int(input('请输入数字'))

    # range 按照大小生成数组
    x = np.arange(0.0, var, 1.0)
    np.savetxt("../data/out.txt", x)

    x = np.loadtxt("../data/out.txt")
    print(x)

    print("ones 生成1矩阵：", np.ones((2, 2), dtype=np.float32))
    print("zeros 生成0矩阵：", np.zeros((2, 2), dtype=np.float32))
    print("eye 生成单位矩阵(必须是方阵)：", np.eye(2, dtype=np.float32))

    # 只能奖6个元素生成为2行3列
    print("reshape 为2行3列", x.reshape((2, 3)))

    # ==比较每一个元素，将元素中等于3的现实为true数组
    print(type(x), x == 3)

    # 现实出x中不为3的。[x != 3] 得到元素中不等于3的布尔数组，x[x != 3] 通过布尔数组得到X中的所有元素。
    print(x[x != 3])

    # array 将数组封装为ndarray对象。numpy的基本对象。astype 是将对象元素的类型转换
    print(np.array([i for i in range(6)]).astype(np.float32))
    print(type(x))

    # 前5个
    print(np.array([i for i in range(6)])[:5])
    print(np.array([i for i in range(6)])[1:5])

    # 第四个到最后
    print(np.array([i for i in range(6)])[4:])

    # 最后三个
    print(np.array([i for i in range(6)])[-3:])

    x = np.array([[5, 7, 8],
                  [4, 5, 112],
                  [2, 3, 4]])
    print(x, "矩阵最小值：", x.min(), "矩阵最大值：", x.max(), "矩阵平均值：", x.mean(), "矩阵数字和:", x.sum())

    print(x, "矩阵行最小数组：", x.min(axis=1), "矩阵行最大数组：", x.max(axis=1), "矩阵行平均数组：", x.mean(axis=1), "矩阵行数字数组:",
          x.sum(axis=1))

    print(x, "矩阵列最小数组：", x.min(axis=0), "矩阵列最大数组：", x.max(axis=0), "矩阵列平均数组：", x.mean(axis=0), "矩阵列数字数组:",
          x.sum(axis=0))

    print(x.shape)

    # 生成2到4之间整数10个
    print(np.random.randint(2, 4, 10))

    # 生成-1,，1之间的20个数组
    print(np.linspace(-1, 1, 20))
